home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue61 / BHO / uBHOManager.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2000-07-07  |  5.8 KB  |  196 lines

  1. unit uBHOManager;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   ExtCtrls, StdCtrls, SHDocVW, MSHTML;
  8.  
  9. type
  10.   TfrmBHOManager = class(TForm)
  11.     memDebug: TMemo;
  12.     Splitter1: TSplitter;
  13.     btnSetValues: TButton;
  14.     edtFirstName: TEdit;
  15.     Label1: TLabel;
  16.     edtLastName: TEdit;
  17.     edtEMail: TEdit;
  18.     cbCountry: TComboBox;
  19.     Label2: TLabel;
  20.     Label3: TLabel;
  21.     Label5: TLabel;
  22.     GroupBox1: TGroupBox;
  23.     btnClearMemo: TButton;
  24.     btnNavigate: TButton;
  25.     btnBack: TButton;
  26.     btnForward: TButton;
  27.     edtNavigateTo: TEdit;
  28.     btnRefresh: TButton;
  29.     btnClick: TButton;
  30.     procedure btnSetValuesClick(Sender: TObject);
  31.     procedure FormCreate(Sender: TObject);
  32.     procedure btnClearMemoClick(Sender: TObject);
  33.     procedure btnNavigateClick(Sender: TObject);
  34.     procedure btnBackClick(Sender: TObject);
  35.     procedure btnForwardClick(Sender: TObject);
  36.     procedure btnRefreshClick(Sender: TObject);
  37.     procedure btnClickClick(Sender: TObject);
  38.   private
  39.     CurrentBrowser : IWebBrowser2;
  40.     procedure UpdateHTMLElements( UserForm : IHTMLFormElement );
  41.   public
  42.     procedure SetWebBrowser( CurrentBrowser : IWebBrowser2 );
  43.     procedure AddLogLine( LineToAdd : String );
  44.   end;
  45.  
  46. var
  47.   frmBHOManager: TfrmBHOManager;
  48.  
  49. implementation
  50.  
  51. {$R *.DFM}
  52.  
  53. procedure TfrmBHOManager.FormCreate(Sender: TObject);
  54. begin
  55.   CurrentBrowser := nil;
  56. end;
  57.  
  58. // Set the IWebBrowser for the top window.
  59. procedure TfrmBHOManager.SetWebBrowser( CurrentBrowser : IWebBrowser2 );
  60. begin
  61.   self.CurrentBrowser := CurrentBrowser;
  62. end;
  63.  
  64. // Add a line to the debug memo.
  65. procedure TfrmBHOManager.AddLogLine( LineToAdd : String );
  66. begin
  67.     memDebug.Lines.Add( LineToAdd );
  68. end;
  69.  
  70. // Update the information from the Delphi form into the HTML page in the browser.
  71. procedure TfrmBHOManager.UpdateHTMLElements( UserForm : IHTMLFormElement );
  72. var
  73.   ItemIndex, ItemName : OleVariant;
  74.   FirstNameElement, LastNameElement, EMailElement : IHTMLInputElement;
  75.   CountryElement : IHTMLSelectElement;
  76. begin
  77.   ItemIndex := 0;
  78.  
  79.   // Set the FirstName element in the HTML page.
  80.   ItemName := 'edtFirstName';
  81.   FirstNameElement := UserForm.item( ItemName, ItemIndex ) as IHTMLInputElement;
  82.   FirstNameElement.Set_value( edtFirstName.Text );
  83.  
  84.   // Set the LastName element in the HTML page.
  85.   ItemName := 'edtLastName';
  86.   LastNameElement := UserForm.item( ItemName, ItemIndex ) as IHTMLInputElement;
  87.   LastNameElement.Set_value( edtLastName.Text );
  88.  
  89.   // Set the EMail element in the HTML page.
  90.   ItemName := 'edtEmail';
  91.   EMailElement := UserForm.item( ItemName, ItemIndex ) as IHTMLInputElement;
  92.   EMailElement.Set_value( edtEMail.Text );
  93.  
  94.    // Set the Country element in the HTML page.
  95.    ItemName := 'cbCountry';
  96.    CountryElement := UserForm.item( ItemName, ItemIndex ) as IHTMLSelectElement;
  97.    CountryElement.Set_value( cbCountry.Items[ cbCountry.ItemIndex ] );
  98.  
  99. end;
  100.  
  101. //  The SetValues button was clicked - set the values specified in the BHOManager
  102. // into the appropriate fields in the HTML page.
  103. procedure TfrmBHOManager.btnSetValuesClick(Sender: TObject);
  104. var
  105.   HtmlDocument : IHTMLDocument2;
  106.   HtmlForms, HtmlFormElements : IHTMLElementCollection;
  107.   UserForm : IHTMLFormElement;
  108.   FormName : WideString;
  109.   Name, Index : OleVariant;
  110. begin
  111.    // Check whether the CurrentBrowser data member is assigned.
  112.    if ( not Assigned( CurrentBrowser ) ) then
  113.         exit;
  114.    // Get the HTML document held by the CurrentBrowser data member.
  115.    HtmlDocument := CurrentBrowser.Get_Document as IHTMLDocument2;
  116.    // Get a collection of the HTML forms in the current page.
  117.    HtmlForms := HtmlDocument.forms;
  118.    memDebug.Lines.Add( 'Form count is ' + IntToStr( HtmlForms.Get_length ) );
  119.    Index := 0;
  120.    Name := 0;
  121.    // Retrieve the Form indexed zero - which is the only one for now.
  122.    UserForm := HtmlForms.item( Name, Index ) as IHTMLFormElement;
  123.    // Get the name of the form.
  124.    FormName := UserForm.Get_name;
  125.    if ( FormName <> '' ) then
  126.       memDebug.Lines.Add( 'Form name is ' + FormName );
  127.    UpdateHTMLElements( UserForm );
  128.  
  129. end;
  130.  
  131. // Clear the debug memo field.
  132. procedure TfrmBHOManager.btnClearMemoClick(Sender: TObject);
  133. begin
  134.   memDebug.Clear;
  135. end;
  136.  
  137. // Navigate to the requested url.
  138. procedure TfrmBHOManager.btnNavigateClick(Sender: TObject);
  139. var
  140.   Flags, TargetFrame, PostData, Headers : OleVariant;
  141. begin
  142.   if ( not Assigned( CurrentBrowser ) ) then
  143.     exit;
  144.   CurrentBrowser.Navigate( edtNavigateTo.Text, Flags, TargetFrame, PostData, Headers );
  145.  
  146. end;
  147.  
  148. // Go back in the browser.
  149. procedure TfrmBHOManager.btnBackClick(Sender: TObject);
  150. begin
  151.   if ( not Assigned( CurrentBrowser ) ) then
  152.     exit;
  153.   CurrentBrowser.GoBack;
  154.  
  155. end;
  156.  
  157. // Go Forward in the browser.
  158. procedure TfrmBHOManager.btnForwardClick(Sender: TObject);
  159. begin
  160.   if ( not Assigned( CurrentBrowser ) ) then
  161.     exit;
  162.   CurrentBrowser.GoForward;
  163.  
  164. end;
  165.  
  166. // Refresh the browser.
  167. procedure TfrmBHOManager.btnRefreshClick(Sender: TObject);
  168. begin
  169.   if ( not Assigned( CurrentBrowser ) ) then
  170.     exit;
  171.   CurrentBrowser.Refresh;
  172.  
  173. end;
  174.  
  175. // Click the Submit button.
  176. procedure TfrmBHOManager.btnClickClick(Sender: TObject);
  177. var
  178.   HtmlDocument : IHTMLDocument2;
  179.   AllForms : IHTMLElementCollection;
  180.   WantedForm : IHTMLFormElement;
  181.   CurrentElement : IHTMLElement;
  182. begin
  183.    // Check whether the CurrentBrowser data member is assigned.
  184.    if ( not Assigned( CurrentBrowser ) ) then
  185.         exit;
  186.    // Get the HTML document held by the CurrentBrowser data member.
  187.    HtmlDocument := CurrentBrowser.Get_Document as IHTMLDocument2;
  188.    AllForms := HtmlDocument.forms;
  189.    WantedForm := Allforms.item( 0, 0 ) as IHTMLFormElement;
  190.    CurrentElement := WantedForm.item( 'SubmitInfo', 0 ) as IHTMLElement;
  191.    CurrentElement.click;
  192.  
  193. end;
  194.  
  195. end.
  196.